from sentence_transformers import SentenceTransformer
from sklearn.manifold import TSNE
import matplotlib.pyplot as plt

# 需要开启vpn，不然会报连接不上huggingface的错误
model=SentenceTransformer('moka-ai/m3e-base' )

sentences = ['为什么良好的睡眠对健康至关重要?',
            '良好的睡眠有助于身体修复自身',
            '增强免疫系统在监督学习中，算法经常需要大量的标记数据来进行有效学习',
            '睡眠不足可能导致长期健康问题,如心脏病和糖尿病',
            '这种学习方法依赖于数据质量和数量',
            '它帮助维持正常的新陈代谢和体重控制',
            '睡眠对儿童和青少年的大脑发育和成长尤为重要',
            '良好的睡眠有助于提高日间的工作效率和注意力',
            '监督学习的成功取决于特征选择和算法的选择',
            '量子计算机的发展仍处于早期阶段，面临技术和物理挑战',
            '量子计算机与传统计算机不同，后者使用二进制位进行计算',
            '机器学习使我睡不着觉'
]

embeddings = model.encode(sentences)

# 维度2，困惑度5（一般在5到50之间）
tsne = TSNE(n_components=2, perplexity=5)
embeddings_2d = tsne.fit_transform(embeddings)
plt.rcParams['font.sans-serif'] = ['Kaitt', 'SimHei']
plt.rcParams['axes.unicode_minus'] = False

color_list = ['black'] * len(embeddings_2d[1:])
color_list.insert(0, 'red')

plt.scatter(embeddings_2d[:, 0], embeddings_2d[:, 1], color=color_list)

for i in range(len(embeddings_2d)):
    plt.text(embeddings_2d[:, 0][i], embeddings_2d[:,1][i] + 2, sentences[i], color=color_list[i])

plt.show()





